/// 异或操作符 ^ 是一种位运算符，它对两个数的二进制表示形式的每一位进行比较。
///
/// 异或操作的规则：如果两个比较的位相同，结果为0；如果不同，结果为1。
/// 这可以总结为以下真值表：
///
/// ```
/// //     1010  (这是第一个数)
/// // ^   1100  (这是第二个数)
/// //     ----
/// //     0110  (这是异或操作的结果)
///
/// // 相当于 0 * 2^1 = 0。
/// assert_eq!(0b1010 ^ 0b1100, 0b110);
///
/// let a = 0b1010; // 第一个二进制数
/// let b = 0b1100; // 第二个二进制数
/// assert_eq!(a ^ b, 0b0110); // 断言结果是否为预期的值
///
/// let mut a = 5;
/// let mut b = 3;
/// a ^= b;
/// b ^= a;
/// a ^= b; // 交换两个值，等同 swap
/// // std::mem::swap(&mut a, &mut b); // 交换两个值
/// assert_eq!(a, 3);
/// assert_eq!(b, 5);
/// ```
pub fn caret() {
    println!("{}", 1 ^ 2);
}

#[cfg(test)]
mod tests {

    #[test]
    fn test_two_sum() {
        let b = 0b1100;
        println!("{b}");
        println!("{}", 1 ^ 1); // 0
        println!("{}", 1 ^ 2); // 3
        println!("{}", 1 ^ 3); // 2
        println!("{}", 1 ^ 4); // 5
    }
}
